#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=1e5+10;
int n;
int a[N];
int main(void){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    int l=1,r=1;
    //从左到右找出比前一个数小的数的位置，这个数就是交换区间的右端点，不用管后面的，因为题目限制只转一次
    for(int i=2;i<=n;i++){
        if(a[i]<a[i-1]){
            r=i-1;
            break;
        }
    }
    //同理，从右到左找到一个比后一个数大的数的位置，作为交换区间的左端点
    for(int i=n-1;i>0;i--){
        if(a[i]>a[i+1]){
            l=i+1;
            break;
        }
    }
    //printf("%d %d\n",l,r);
    //反转区间
    if(l>r){
        swap(l,r);
    }
    int i=l;
    int j=r;
    while(i<=j){
        swap(a[i],a[j]);
        i++;
        j--;
    }
    //检查是否排序
    bool flag=false;
    for(int i=1;i<n;i++){
        if(a[i]>a[i+1]){
            flag=true;
            break;
        }
    }
    if(flag){
        printf("no\n");
    }
    else{
        printf("yes\n");
        printf("%d %d\n",l,r);
    }
    return 0;
}